#ifndef OPMATRIZ
#define OPMATRIZ

#include "miscutils.h"
#include <stdio.h>

/*
 * Matriz: estrutura básica para matriz
 * PMatriz: ponteiro para Matriz
 */
typedef struct
{
	double** elems;
	int nLin,nCol;

}Matriz, *PMatriz;



PMatriz inicia(int nLin,int nCol);
int isVetor(PMatriz a);
int isId(PMatriz a);
int isQuadrada(PMatriz a);
int isEscalar(PMatriz a);
double getEscalar(PMatriz a);
int getColuna(int pi, PMatriz a, PMatriz b);
void leMatriz(FILE* arq, PMatriz a, int nLin, int nCol);
void leVetor(FILE* arq, PMatriz a, int dim, int isCol);
void clone(PMatriz a, PMatriz b);
void freeMatriz(PMatriz a);
void newId(PMatriz a, int dim);
void impMatriz(FILE* arq, PMatriz a);
void impVetor(FILE* arq, PMatriz a);
int mult(PMatriz a, PMatriz b, PMatriz c);
void transp(PMatriz a, PMatriz b);
int append(PMatriz a, PMatriz b, PMatriz c);
int truncM(PMatriz a, int nCol, PMatriz b);
int trocaCol(PMatriz a, int colA, PMatriz b, int colB, PMatriz c);
int inv(PMatriz a, PMatriz b, PMatriz invB, int cCol, PMatriz invA);


#endif

